package com.acol.util;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.Predicate;

/**
 * Utilitario para beans
 * @author Luiz Alberto
 */
class DynamicPredicate implements Predicate {
    private String property;
    private Comparable value;

    /**
     * Construtor com os parametros para comparacao.
     * @param property  propriedade do bean
     * @param value     valor a ser comparado
     */
    public DynamicPredicate(String property, Comparable value) {
        this.property   = property;
        this.value      = value;
    }
    
    /**
     * Retorna a comparacao com o valor a ser encontrado.
     * @param   input bean para comparacao
     * @return  o resultado da comparacao. 
     */
    public boolean evaluate(Object input) {
        boolean isEquals = false;
        
        try {
            Comparable comparable = (Comparable)PropertyUtils.getProperty(input, property);
            isEquals              = (value.compareTo(comparable) == 0);
        }
        catch (Exception e) {
            throw new RuntimeException(e.toString());
        }
        return isEquals;
    }
}

